number theory divisibility problems